package com.cxq.boot.dto;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;

//分页模型
@Data
public class PaginationDTO<T> {
    private List<T> data;//问题或通知数据
    private boolean showPrevious;//上一页按钮，如 <
    private boolean showFirstPage;//第一页按钮，如 <<
    private boolean showNext;//下一页按钮，如 >
    private boolean showEndPage;//最后一页按钮，如 >>
    private Integer page;//当前页
    private List<Integer> pages = new ArrayList<>();//当前页数，如  3 4 5 6 7
    private Integer totalPage;//总页数

    public void setPagination(Integer totalPage, Integer page) {
        //赋值总页数totalPage
        this.totalPage = totalPage;

        //赋值当前页page
        this.page = page;

        //添加 pages
        pages.add(page);
        for (int i = 1; i <= 3; i++) {
            if (page - i > 0){
                pages.add(0,page - i);
            }
            if (page + i <= totalPage){
                pages.add(page + i);
            }
        }

        //是否展示上一页 (判断当前页是否是首页)
        if (page == 1) {
            showPrevious = false;
        } else {
            showPrevious = true;
        }

        //是否展示下一页 (判断当前是否是最后一页)
        if (page == totalPage) {
            showNext = false;
        } else {
            showNext = true;
        }

        //是否展示第一页
        if (pages.contains(1)) {
            showFirstPage = false;
        } else {
            showFirstPage = true;
        }

        //是否展示最后一页
        if (pages.contains(totalPage)) {
            showEndPage = false;
        } else {
            showEndPage = true;
        }
    }
}
